package com.erp.order.domain.bo;

import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.web.oldDomain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * 卖家订单业务对象 erp_seller_order
 *
 * @author erp
 * @date 2023-03-08
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class ErpSellerOrderBo extends BaseEntity {

    /**
     * 主键
     */
    @NotNull(message = "主键不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 卖家登录ID
     */
    @NotBlank(message = "卖家登录ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private String sellerLoginId;

    /**
     * 卖家操作人员的登录id
     */
    @NotBlank(message = "卖家操作人员的登录id不能为空", groups = { AddGroup.class, EditGroup.class })
    private String sellerOperatorLoginId;

    /**
     * 卖家全名
     */
    @NotBlank(message = "卖家全名不能为空", groups = { AddGroup.class, EditGroup.class })
    private String sellerSignerFullname;

    /**
     * 买家登录id
     */
    @NotBlank(message = "买家登录id不能为空", groups = { AddGroup.class, EditGroup.class })
    private String buyerLoginId;

    /**
     * 订单ID
     */
    @NotNull(message = "订单ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long orderId;

    /**
     * 订单类型
     */
    @NotBlank(message = "订单类型不能为空", groups = { AddGroup.class, EditGroup.class })
    private String bizType;

    /**
     * 买家全名
     */
    @NotBlank(message = "买家全名不能为空", groups = { AddGroup.class, EditGroup.class })
    private String buyerSignerFullname;

    /**
     * 订单创建时间
     */
    @NotBlank(message = "订单创建时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private String gmtCreate;

    /**
     * 订单支付时间;和订单详情中gmtPaysuccess字段意义相同。
     */
    @NotBlank(message = "订单支付时间;和订单详情中gmtPaysuccess字段意义相同。不能为空", groups = { AddGroup.class, EditGroup.class })
    private String gmtPayTime;

    /**
     * 订单最后更新时间
     */
    @NotBlank(message = "订单最后更新时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private String gmtUpdate;

    /**
     * 订单详情链接
     */
    @NotBlank(message = "订单详情链接不能为空", groups = { AddGroup.class, EditGroup.class })
    private String orderDetailUrl;

    /**
     * 订单状态
     */
    @NotBlank(message = "订单状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String orderStatus;

    /**
     * 付款金额
     */
    @NotBlank(message = "付款金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private String payAmount;

    /**
     * 付款币种
     */
    @NotBlank(message = "付款币种不能为空", groups = { AddGroup.class, EditGroup.class })
    private String payCurrencyCode;

    /**
     * 是否为增量订单;用户只要查看订单，增量订单则变为否，否则一直为是
     */
    @NotBlank(message = "是否为增量订单;用户只要查看订单，增量订单则变为否，否则一直为是不能为空", groups = { AddGroup.class, EditGroup.class })
    private String incrementalOrder;

    /**
     * 订单在ERP内部的状态
     */
    @NotBlank(message = "订单在ERP内部的状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String erpInnerOrderStatus;

    private String shipmentsSolutionType;

    private Long headUserId;

    private String leftEndGoodTime;

    private String orderProcessFlag;

    @NotBlank(message = "线上发货时选择的物流方案", groups = { AddGroup.class, EditGroup.class })
    private String warehouseCarrierService;

    /**
     * 乐观锁
     */
//    @NotBlank(message = "乐观锁不能为空", groups = { AddGroup.class, EditGroup.class })
    private String revision;

    /**
     * 创建人
     */
    @NotBlank(message = "创建人不能为空", groups = { AddGroup.class, EditGroup.class })
    private String createBy;

    /**
     * 创建时间
     */
    @NotNull(message = "创建时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date createTime;

    /**
     * 更新人
     */
    @NotBlank(message = "更新人不能为空", groups = { AddGroup.class, EditGroup.class })
    private String updateBy;

    /**
     * 更新时间
     */
    @NotNull(message = "更新时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date updateTime;

}
